package niuke;

/**
 * description:
 * author:张腾
 * date:2021-07-08
 */

/**
 * 假定你知道某只股票每一天价格的变动。
 * 你最多可以同时持有一只股票。但你最多只能进行两次交易（一次买进和一次卖出记为一次交易。买进和卖出均无手续费）。
 * 请设计一个函数，计算你所能获得的最大收益。
 */
public class NC135 {
    public int maxProfit (int[] prices) {
        // write code here
        int in = prices[0];
        int max = 0;
        int inIndex=0,outIndex=0;
        for (int i = 1; i < prices.length; i++) {
            int tmp = prices[i]-in;
            if (tmp>max){
                inIndex = in;
                outIndex = i;
                max = tmp;
            }
            if (prices[i]<in) in = prices[i];
        }
        in = prices[0];
        int max2 = 0;
        for (int i = 1; i < prices.length; i++) {
            if (i==inIndex || i==outIndex) continue;
            int tmp = prices[i]-in;
            if (tmp>max2) max2 = tmp;
            if (prices[i]<in) in = prices[i];
        }
        return max+max2;
    }
}
